import { Map, APILoader, Marker, GeolocationControl, Polyline, InfoWindow } from "@uiw/react-baidu-map";
import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react";

export interface Point {
    lng: number;
    lat: number;
}


export function getGravity(points: Array<Point>): Point {
    let area = 0.0;                      // 初始总面积
    let x = 0.0;
    let y = 0.0;            // 初始点坐标
    const a = points.length;
    let lng = 0;
    let lat = 0;
    for (let i = 0; i < a; i++) {
        const lat1 = points[i].lat; // 横坐标
        const lng1 = points[i].lng; // 纵坐标
        let lat2;
        let lng2;
        if (i === 0) {
            lat2 = points[a - 1].lat;
            lng2 = points[a - 1].lng;
        }
        else {
            lat2 = points[i - 1].lat;
            lng2 = points[i - 1].lng;
        }
        const fg = (lat1 * lng2 - lng1 * lat2) / 2.0            // 小三角形面积
        area += fg      // 总面积
        x += fg * (lat1 + lat2) / 3.0
        y += fg * (lng1 + lng2) / 3.0
        lat = x / area        // 重心横坐标
        lng = y / area        // 重心纵坐标
    }
    return {
        lng: lng,
        lat: lat,
    };
}